1. Field of the Invention
The present invention relates to digital computer software. More specifically, the present invention concerns a memory management apparatus to manage memory in which an execution object to be executed on an object oriented program is stored, memory management method, memory management program and computer readable recording medium in which the program is recorded.
2. Description of the Related Art
With progress in computer technology, communication and broadcasting technology in recent years, multimedia systems to offer various information media such as image, sound and motion picture are spreading. Among such multimedia systems put on the market are interactive digital television, movable terminal, game machine or the like.
In the multimedia systems, large volume data, for example, image, sound and motion image data, transmitted via the communication link like the Internet, is combined with an application within the multimedia systems and is offered to users as image and sound from the screen, speaker etc. Therefore, there is needed in the multimedia systems technology for efficiently processing a large volume of data that is to be downloaded.
In recent years, Sun Microsystems' object oriented language “Java” (registered trademark) environment is spreading as a technique for materializing efficient stream processing of a large volume data such as image, sound and motion picture data from communication media.
As one example of the conventional, related art technique for an application program described in Java (hereinafter “Java application”), there will be explained a flow processing in which image data are downloaded, via communication media such as the Internet, in accordance with a request from the Java application and then used in that Java application.
FIG. 10 is a functional block diagram of a general memory management apparatus, in a multimedia environment, for downloading image data in accordance with a request executed from the Java application.
The memory management apparatus shown in FIG. 10 is formed of Java application 11 or a program formed of the Java language, Java virtual machine program (hereinafter Java VM) 12, native program 13, operating system (OS) 14 and object memory section 15.
Java application 11 has a source code described in Java, and is compiled and converted into a low pseudo code, that is, an intermediate code (hereinafter byte code). The byte code is converted into a machine language, which can be interpreted and executed by a computer (hereinafter “native code”), and is then executed by the computer.
Java VM 12 is formed of interpreter section 12a, object management section 12b, and Java Native Interface (JNI) section 12c. From Java application 11, interpreter section 12a reads out a byte code to represent an instruction, converts the instruction into a native code and execute the instruction. Object management section 12b generates data or source code (hereinafter “Java object”) to be used for execution of Java application 11, or refers to generated Java objects.
Here, the Java object is a byte code defined by Java class, and is generated or instanced in object memory section 15 by object management section 12b in accordance with a request of Java application 11. The instanced Java object alone is used in execution by Java application 11 as execution object.
JNI section 12c materializes an application program interface (API) made up of a set of instructions and functions to execute native program 13 described in C language etc. in accordance with a request of Java application 11. Furthermore, JNI section 12c can have Java VM execute Java application 11 in accordance with a request from native program 13.
Object memory section 15 is formed of RAM etc. and has variable address memory area 15a to be a work area for storing or generating Java objects and fixed address memory area 15b to be a work area for native program 13 or OS 14.
Variable address memory area 15a is used as function to collect Java object unneeded by Java VM 12 (hereinafter “GC function” (garbage collection function)) and the addresses of stored data are variable and controllable. The memory areas that are unused any more are collected by the GC function to offer a continuous usable memory area, whereby the memory can be used efficiently. On the other hand, fixed address memory area 15b memorizes or stores data to be used for execution of modules such as native program 13 and OS 14, and under management of OS 14, an address is allocated to each program. Data is not relocated as in variable address memory area 15a. 
As set forth above, under memory management in the execution environment of Java application 11, Java objects are generally memorized or stored in variable address memory area 15a on the memory in order to utilize GC function of Java VM12. This area is distinguished from the area where data used by native program 13 and OS 14 is stored.
Native program 13 is a native code described in the C language. Native program 13 is formed of a module that makes real time processing possible to download image data in the fixed address memory area 15b via communication media such as the Internet, satellite broadcasting, cable broadcasting etc. in accordance with a request from Java application 11.
Next, there will be explained the flow of processing when downloaded image data is used for execution of Java application 11. Here, because Java application 11 can refer to only Java object memorized in variable address memory area 15a, the downloaded image data cannot be referred to directly as Java object.
In FIG. 10, Java objects OBA, OBB are memorized in variable address memory area 15a of object memory section 15. In fixed address memory area 15b, data DA downloaded by native program 13 is stored. In the example shown in FIG. 10, Java objects OBA, OBB only can be referred to by Java application 11, and downloaded data DA cannot be referred to.
FIG. 11 is a diagram showing the state of object memory section 15 when download data DA can be referred to as Java object. First, in accordance with a request from Java application 11, object management section 12b secures a memory area in a vacant area according to download data DA.
Next, native program 13 copies download data DA in fixed address memory area 15b via JNI section 12c on variable address memory area 15a as download data DB. Download data DB copied in variable address memory area 15a will be eventually used in execution of Java application 11 as Java object.
When data in fixed address memory area 15b managed by native program 13 as mentioned above is used in execution of Java application 11, it is necessary to copy download data DA from fixed address memory area 15b to variable address memory area 15a. Because of copying, therefore, overhead occurs and could delay execution. In addition, during copying, it is necessary to secure a memory area of download data DA for the copying destination or variable address memory area 15a and the copying source or fixed address memory area 15b respectively, and it happens that the memory area is not used efficiently.